package com.elmz.drift;
import android.os.AsyncTask;
import android.util.Log;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpRequestBase;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
public class APIRequestFragment extends AsyncTask<String, Void, String>{
public static final String base = "http://104.131.87.106/";
private ICallback callback;
public static String LOG_TAG = "ELMZ-DRFT";
public APIRequestFragment(ICallback cb){
callback = cb;
}
@Override
protected String doInBackground(String... params){
Log.d(LOG_TAG, "Received request: " + params[0] + " " + params[1]);
HttpRequestBase request = null;
String method = params[0];
String url = base + params[1];
if(method.equals("GET")){
request = new HttpGet(url);
} else if(method.equals("POST")){
request = new HttpPost(url);
request.setHeader("Content-Type", "application/x-www-form-urlencoded");
StringBuilder formDataBuilder = new StringBuilder();
try{
for(int i = 1; i < params.length - 1; i++){
formDataBuilder.append(Integer.toString(i));
formDataBuilder.append("=");
formDataBuilder.append(URLEncoder.encode(params[i + 1], "utf-8"));
if(i < params.length - 2){
formDataBuilder.append("&");
}
}
((HttpPost) (request)).setEntity(new StringEntity(formDataBuilder.toString()));
} catch(UnsupportedEncodingException e){
Log.e(LOG_TAG, "Unsupported encoding :(");
}
}
return getRequest(request);
}
public String getRequest(HttpRequestBase req){
String response = "";
DefaultHttpClient client = new DefaultHttpClient();
try{
HttpResponse execute = client.execute(req);
InputStream content = execute.getEntity().getContent();
BufferedReader buffer = new BufferedReader(new InputStreamReader(content));
String s = "";
while((s = buffer.readLine()) != null){
response += s;
}
} catch(Exception e){
e.printStackTrace();
}
return response;
}
@Override
protected void onPostExecute(String result){
JsonElement json = new JsonParser().parse(result);
callback.callback(json);
}
}